﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using ProcelNasEscolas.Model.Fichas;
using ProcelNasEscolas.Model.Interfaces;
using ProcelNasEscolas.Model.Respostas;
using ProcelNasEscolas.Model;

namespace ProcelNasEscolas.Data
{
    public class QuestionarioDao : AbstractCrudDao<IQuestionarioData>, IQuestionarioDao 
    {
        public IQuestionario ToModelObject(IQuestionarioData questionarioData)
        {
            IQuestionario questionarioModel = new IQuestionario();

            switch (questionarioData.GetType().Name)
            {
                case "FichaAcompanhamentoEscolaData":
                    {
                        questionarioModel = new FichaAcompanhamentoEscolaDao().ToModelObject((FichaAcompanhamentoEscolaData) questionarioData);
                    };
                    break;
                case "FichaAvaliacaoCursoCapacitacaoData":
                    {
                        questionarioModel = new FichaAvaliacaoCursoCapacitacaoDao().ToModelObject((FichaAvaliacaoCursoCapacitacaoData)questionarioData);
                    };
                    break;
                case "FichaCadastroDaEscolaData":
                    {
                        questionarioModel = new FichaCadastroDaEscolaDao().ToModelObject((FichaCadastroDaEscolaData)questionarioData);
                    };
                    break;
                case "FichaReuniaoAcompanhamentoData":
                    {
                        questionarioModel = new FichaReuniaoAcompanhamentoDao().ToModelObject((FichaReuniaoAcompanhamentoData)questionarioData);
                    };
                    break;
                case "QuestionarioAlunosTreinados1Data":
                    {
                        questionarioModel = new QuestionarioAlunosTreinados1Dao().ToModelObject((QuestionarioAlunosTreinados1Data)questionarioData);
                    };
                    break;
                case "QuestionarioAlunosTreinados2Data":
                    {
                        questionarioModel = new QuestionarioAlunosTreinados2Dao().ToModelObject((QuestionarioAlunosTreinados2Data)questionarioData);
                    };
                    break;
                case "QuestionarioControle1Data":
                    {
                        questionarioModel = new QuestionarioControle1Dao().ToModelObject((QuestionarioControle1Data)questionarioData);
                    };
                    break;
                case "QuestionarioControle2Data":
                    {
                        questionarioModel = new QuestionarioControle2Dao().ToModelObject((QuestionarioControle2Data)questionarioData);
                    };
                    break;
            }

            return questionarioModel;
        }


        public IQuestionarioData CreateOrUpdate(IQuestionario questionarioModel)
        {

            IQuestionarioData questionarioData = new IQuestionarioData();

            switch (questionarioModel.GetType().Name)
            {
                case "FichaAcompanhamentoEscola":
                    {
                        questionarioData = new FichaAcompanhamentoEscolaDao().CreateOrUpdate((FichaAcompanhamentoEscola)questionarioModel);
                    };
                    break;
                case "FichaAvaliacaoCursoCapacitacao":
                    {
                        questionarioData = new FichaAvaliacaoCursoCapacitacaoDao().CreateOrUpdate((FichaAvaliacaoCursoCapacitacao)questionarioModel);
                    };
                    break;
                case "FichaCadastroDaEscola":
                    {
                        questionarioData = new FichaCadastroDaEscolaDao().CreateOrUpdate((FichaCadastroDaEscola)questionarioModel);
                    };
                    break;
                case "FichaReuniaoAcompanhamento":
                    {
                        questionarioData = new FichaReuniaoAcompanhamentoDao().CreateOrUpdate((FichaReuniaoAcompanhamento)questionarioModel);
                    };
                    break;
                case "QuestionarioAlunosTreinados1":
                    {
                        questionarioData = new QuestionarioAlunosTreinados1Dao().CreateOrUpdate((QuestionarioAlunosTreinados1)questionarioModel);
                    };
                    break;
                case "QuestionarioAlunosTreinados2":
                    {
                        questionarioData = new QuestionarioAlunosTreinados2Dao().CreateOrUpdate((QuestionarioAlunosTreinados2)questionarioModel);
                    };
                    break;
                case "QuestionarioControle1":
                    {
                        questionarioData = new QuestionarioControle1Dao().CreateOrUpdate((QuestionarioControle1)questionarioModel);
                    };
                    break;
                case "QuestionarioControle2":
                    {
                        questionarioData = new QuestionarioControle2Dao().CreateOrUpdate((QuestionarioControle2)questionarioModel);
                    };
                    break;
            }

            return questionarioData;
        }
    }
}
